#include <iostream>  
#include <stack>  
using namespace std;  
  
const int MAXN = 10;  
  
int n;  
int col[MAXN]; // 列标记  
stack<int> stk; // 用于回溯的栈  
  
// 判断当前位置是否可以放置皇后  
bool isValid(int row, int col) {  
    for (int i = 0; i < row; ++i) {  
        if (col[i] == col || abs(col - col[i]) == abs(row - i)) {  
            return false;  
        }  
    }  
    return true;  
}  
  
// 求解n皇后问题  
void solveNQueens() {  
    for (int i = 0; i < n; ++i) {  
        if (isValid(i, i)) {  
            col[i] = i;  
            if (i == n - 1) {  
                // 输出结果  
                for (int j = 0; j < n; ++j) {  
                    for (int k = 0; k < n; ++k) {  
                        if (k == col[j]) {  
                            cout << "Q ";  
                        } else {  
                            cout << ". ";  
                        }  
                    }  
                    cout << endl;  
                }  
                cout << endl;  
            } else {  
                // 继续搜索下一行  
                stk.push(i);  
                solveNQueens();  
                // 回溯，尝试放置下一个皇后在上一行不同的列上  
                while (!stk.empty()) {  
                    int row = stk.top();  
                    stk.pop();  
                    for (int j = col[row] + 1; j < n; ++j) {  
                        if (isValid(row, j)) {  
                            col[row] = j;  
                            stk.push(row);  
                            break;  
                        }  
                    }  
                }  
            }  
        } else {  
            // 如果当前位置不能放置皇后，回溯到上一行，继续搜索下一个位置放置皇后  
            while (!stk.empty()) {  
                int row = stk.top();  
                stk.pop();  
                for (int j = col[row] - 1; j >= 0; --j) {  
                    if (isValid(row, j)) {  
                        col[row] = j;  
                        stk.push(row);  
                        break;  
                    }  
                }  
            }  
        }  
    }  
}  
  
int main() {  
    cin >> n; // 输入n皇后问题规模n（n<=10）  
    solveNQueens(); // 求解n皇后问题，输出结果并退出程序  
    return 0;  
}
